<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>

  <body>
    <input type="text" />
    <div class="text"></div>

    <script>
      const input = document.querySelector("input");
      const text = document.querySelector(".text");

      const obj = {};

      Object.defineProperty(obj, "message", {
        get() {
          return input.value;
        },
        set(val) {
          text.innerText = val;
          // input.value = val;
        },
      });

      input.addEventListener("input", function () {
        obj.message = input.value;
        console.log(obj);
      });
    </script>
  </body>
</html>

<!-- 
  响应式: 在改变数据的时候，视图会跟着更新。
  Vue 给 data里面所有的属性加上 set， get 这个过程就叫做 响应式
-->
